#ifndef BALL_H
#define BALL_H

#include "../Graphics/Drawable.h"
#include "../Physics/Disc.h"
#include "../Physics/Movable.h"
#include "../Math/Vector.h"

namespace Game
{
	class Ball: public Graphics::Drawable, public Physics::Disc, public Physics::Movable
	{

		public:
				/** Default constructor */
				Ball(int num=-1, float radius=0.0f, Renderable* parent=NULL);

				/**********
				* GETTERS *
				**********/
				/** [read-write] Returns the Ball Number */
				int number() const;

				/**********
				* SETTERS *
				**********/
				void setNumber(int num);

				/**********
				* DRAWING *
				**********/
				/** implements Drawable::redraw() */
				void redraw();
				

				//Override position changing methods to update the center of the Physics Disc
				void setPosition(const Math::Point& pos);
				void move(const Math::Point& pos);
				void move(const Math::Vector& amount);

		protected:
				int _number;
				GLUquadricObj *_quadric;
	};
}
#endif
